139

     # Локальное поднятие Airflow (conda и pip)

Содержание

  • Установка через conda
    • Решение возможных проблем
  • Проверка работы
  • Подробнее о настройках
  • Установка операторов

Установка через conda

1
2
3
4
5
conda create -n airflow python=3.10  
conda activate airflow
pip3 install apache-airflow
# запуск
airflow standalone

После запуска ищем в логах строки:

1
2
3
standalone | Airflow is ready
standalone | Login with username: admin  password: h3rxPVGNXuQBTns9
standalone | Airflow Standalone is for development purposes only. Do not use this in production!

Решение возможных проблем

Если выдаёт ошибки типа:

missing X required positional arguments: 'sequence', 'schema', 'bind_key', and 'sid_length'

Например:

1
2
webserver  | app.session_interface = AirflowDatabaseSessionInterface(
webserver  | TypeError: SqlAlchemySessionInterface.__init__() missing 4 required positional arguments: 'sequence', 'schema', 'bind_key', and 'sid_length'

Тогда смотрим, какой airflow установлен и какой python используется:

1
2
python3 --version
python3 -m airflow version

И повторно ставим, используя точные версии в следующей команде:

1
pip3 install apache-airflow==ВЕРСИЯ_AIRFLOW --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-ВЕРСИЯ_AIRFLOW/constraints-ВЕРСИЯ_PYTHON.txt"

Например:

pip3 install apache-airflow==2.8.1 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.11.txt"

После чего повторно запускаем:

airflow standalone

Проверка работы

http://localhost:8080

Подробнее о настройках

Приложение Airflow скорее всего установится в домашнюю папку:

/home/$USER/airflow/

Либо по тому пути, из-под которого вызывалась установка. В любому случае можно поискать:

find /home/$USER/ -name airflow

/home/dao2/anaconda3/envs/airflow
/home/dao2/anaconda3/envs/airflow/lib/python3.10/site-packages/airflow
/home/dao2/anaconda3/envs/airflow/lib/python3.10/site-packages/airflow/www/templates/airflow
/home/dao2/anaconda3/envs/airflow/bin/airflow
==> /home/dao2/airflow <==
/home/dao2/.local/share/Trash/files/airflow
/home/dao2/.local/lib/python3/site-packages/airflow
/home/dao2/.local/lib/python3/site-packages/airflow/www/templates/airflow
/home/dao2/.local/bin/airflow

Данная директория хранит приложение, состоящее из:

ls -l /home/dao2/airflow/

airflow.cfg
airflow.db
airflow-webserver.pid
dags
logs
standalone_admin_password.txt
task_logs
webserver_config.py

airflow.cfg - конфиг приложения, можно, например, изменить:

  • dags_folder = /home/dao2/airflow/dags: директорию хранения дагов
  • default_timezone = utc: часовой пояс, используемый по умолчанию в UI
  • load_examples = True: отключить отображение дагов с примерами
  • узнать и поменять используемые порты по умолчанию для разных компонентов (endpoint_url = http://localhost:8080)

airflow.db - используемая приложением база

airflow-webserver.pid - номер процесса, на котором в последний раз запускался сервер. Если имеются какие-либо проблемы, напр., приложеие стартует, но UI недоступен:

kill id_из_airflow-webserver.pid

И перезапускаем приложение.

standalone_admin_password.txt - логин/пароль для входа в UI

webserver_config.py - настройки вебсервера / Flask-приложения

Для повторного запуска пользуемся:

conda activate airflow
conda activate standalone

Дополнительня установка плагинов и модулей

Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
conda activate airflow

conda install -c conda-forge openjdk

pip3 install apache-airflow[jdbc]
pip3 install apache-airflow[hive]
pip3 install apache-airflow-providers-apache-spark

pip3 install pyhive
pip3 install JayDeBeApi